package ar.uade.distribuidas.tpo.srv.dao;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import ar.uade.distribuidas.tpo.base.dominiodto.ItemListaRodamientoDTO;
import ar.uade.distribuidas.tpo.base.dominiodto.OrdenDeCompraDTO;

public class OrdenDeCompraXmlDAO {
	private static final String XML_ORDENES_COMPRA_DIR ="c:/";

	public static String saveOrdenCompraToXml(OrdenDeCompraDTO compra) {
		
		String xmlOrdenCompra="<?xml version=\"1.0\" encoding=\"UTF-8\"?><!-- ORDEN DE COMPRA -->";
		xmlOrdenCompra += "<OrdenCompra numero=\""+compra.getNumero()+"\">"
		+"<Emision>\""+compra.getFecha()+"\"</Emision>"			
		+"<Proveedor>"
		+"<Cuil>\""+compra.getProveedor().getCuil()+"\"</Cuil>"
		+"<RazonSocial>\""+compra.getProveedor().getNombre()+"\"</RazonSocial>"
		+"</Proveedor>"
		+"<Rodamientos>";
		for(ItemListaRodamientoDTO ilr : compra.getItem()){
			xmlOrdenCompra +="<Item serie=\""+ilr.getRodamiento().getNroSerie()+"\">"
					+"<Sufijo>\""+ilr.getRodamiento().getSufijo()+"\"</Sufijo>"
					+"<Marca>\""+ilr.getRodamiento().getMarca()+"\"</Marca>"
					+"<Origen>\""+ilr.getRodamiento().getPais()+"\"</Origen>"
					+"<Cantidad>\""+ilr.getCantidad()+"\"</Cantidad>"
					+"</Item>";

		
		}

		xmlOrdenCompra +="</Rodamientos></OrdenCompra>";
	
		System.out.println(xmlOrdenCompra);
		
		return xmlOrdenCompra;
	}
	public void guardarOCXML (OrdenDeCompraDTO compra){
		
		try {
	        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
	        DocumentBuilder builder = factory.newDocumentBuilder();
	        Document f = builder.parse(new InputSource(new StringReader(saveOrdenCompraToXml(compra))));
	        
	        Transformer transformer;
			try {
				
				transformer = TransformerFactory.newInstance().newTransformer();
				Result output = new StreamResult(new FileWriter(new File(XML_ORDENES_COMPRA_DIR+"Cotizacion_"+compra.getNumero()+".xml")));
				//Result output = new StreamResult(new File(XML_ORDENES_COMPRA_DIR+"Cotizacion_"+compra.getNumero()+".xml"));
		        Source input = new DOMSource(f);
		
		        transformer.transform(input, output);
			} catch (Exception e) {
				
				e.printStackTrace();
			}
			} catch (SAXException e) {
				
				e.printStackTrace();
			} catch (IOException e) {
			
				e.printStackTrace();
			} catch (ParserConfigurationException e) {
				
				e.printStackTrace();
			} catch (Exception e) {
				
				e.printStackTrace();
			}
			
	
	
	}

	public static OrdenDeCompraXmlDAO getInstancia(String file) {
		// TODO Auto-generated method stub
		return null;
	}

	public OrdenDeCompraDTO recuperarOC() {
		// TODO Auto-generated method stub
		return null;
	}
}
